#ifndef _SERVERREGIONMANAGER_
#define	_SERVERREGIONMANAGER_

#include <iostream>
#include "Objects/RegionManager.hpp"
#include "ServerRegion.hpp"
#include "ServerEntityManager.hpp"
#include "PlayerManager.hpp"
#include "Utilities/CollisionHelper.hpp"

/**
 * Server implementation of a RegionManager.
 * @see RegionManager
 * @see Region
 */
class ServerRegionManager: public RegionManager{
public:
    /** Server's EntityManager for access to entities.*/
    ServerEntityManager* entityManager;
    PlayerManager* playerManager;
    
    ServerRegionManager();
    
    virtual void update(unsigned int frameTime);
    
    virtual Region* createRegion(const char* name);
    virtual bool destroyRegion(Region* region);
    virtual ServerRegion* findRegion(const char* name);
    
    virtual void bind(lua_State* luaState);
    virtual void push(lua_State* luaState);
};


#endif

